import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 为了应用程序简单，系统结构清晰，将 窗体类 App 集成自 JFrame
public class App extends JFrame {

    //在可视化界面中创建的控件，
    //变为窗体类种的私有字段，方便进行编程操作
    private JPanel mainPanel;
    private JTextField txt_num1;
    private JTextField txt_num2;
    private JButton btn_add;
    private JLabel lbl_sum;

    // 构造函数，初始化，设置窗体基本属性，如布局等
    // 也用来设置窗体应用类的核心逻辑
    // 参数 title 用来获取标题
    public App(String title) {

        //设置窗体标题
        this.setTitle(title);
        //设置内容面板
        this.setContentPane(this.mainPanel);
        // 设置默认窗体关闭操作为红叉按钮（退出按钮）
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        //使窗体可视，就是让窗体显示出来，
        // 一般要放在最后一句，前面必须都配置完成
        this.setVisible(true);
        //点击加法按钮后，执行的操作
        // 对按钮添加一个动作监听器，监听按钮点击操作
        btn_add.addActionListener(new ActionListener() {
            // 事件方法，在监听器监听到对应操作后执行
            // 在这里，要执行的两数相加操作
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获取用户在文本框种输入的数字，
                // 因为文本框种获取到的都是 string
                // 必须在计算前将其转换为 float
                // 事件中，不能用 this
                // 在这里用 try catch 避免用户输入错误的信息

                try {
                    float num1= Float.parseFloat(txt_num1.getText());
                    float num2 = Float.parseFloat(txt_num2.getText());

                    // 开始计算
                    float sum = num1+num2;
                    // 将结果显示在 label 中
                    lbl_sum.setText(String.valueOf(sum));
                }
                catch (Exception ex)
                {
                    lbl_sum.setText("请输入有效的数字");
                }




            }
        });
    }

    //主函数，应用程序入口
    public static void main(String[] args){
        new App("加法运算器");
    }
}
